#include <stdio.h>
#include <string.h>
#include <mysql/mysql.h>

#define HOST "127.0.0.1"
#define USER "root"
#define PASSWD "123456"
#define DBNAME "gobang"
#define PORT 3306

int main()
{
    //1、初始化 mysql 句柄
    MYSQL *mysql = mysql_init(NULL);//传值为空，在堆上开辟内存
    if(mysql == NULL)
    {
        perror("mysql_init fail!\n");
        return -1;
    }
    // 2、与MySQL服务器建立连接
    // mysql_real_connect(mysql,host,user,passwd,dbname,port,unix_socket,flag)
    if( mysql_real_connect(mysql, HOST, USER, PASSWD, DBNAME, PORT, NULL, 0) == NULL)
    {
        printf("mysql_real_connect fail: %s\n", mysql_error(mysql));
        mysql_close(mysql);
        return -1;
    }
    // 3、设置客户端字符集
    if(mysql_set_character_set(mysql,"utf8")!=0) //成功返回0
    {
        printf("mysql_set_character_set fail: %s\n", mysql_error(mysql));
        mysql_close(mysql);
        return -1;
    }
    // 4、选择要操作的数据库
    if(mysql_select_db(mysql,DBNAME)!=0)
    {
        printf("mysql_select_db fail: %s\n", mysql_error(mysql));
        mysql_close(mysql);
        return -1;
    }
    // 5、执行SQL语句操作
    //char *sql = "insert into stu values (null,'唐晨',21,89.5)";
    //char *sql = "update stu set score = score + 10 where id = 1";
    char *sql = "select * from stu";
    if (mysql_query(mysql, sql) != 0)
    {
        printf("mysql_query fail: %s\n", mysql_error(mysql));
        mysql_close(mysql);
        return -1;
    }
    // 6、如果SQL语句是查询操作，需要将结果保存到本地
    MYSQL_RES *res = mysql_store_result(mysql);
    if(res == NULL)
    {
        printf("mysql_store_result fail: %s\n", mysql_error(mysql));
        mysql_close(mysql);
        return -1;
    }
    // 7、统计结果集中结果条数
    //统计行数
    int row = mysql_num_rows(res);
    int col = mysql_num_fields(res);
    // 8、遍历保存在本地的结果集
    int i = 0;
    for (i = 0; i < row; i++)
    {
        MYSQL_ROW rows = mysql_fetch_row(res);
        int j = 0;
        for (j = 0; j < col; j++)
        {
            printf("%s\t", rows[j]);
        }
        printf("\n");
    }
        // 9、释放结果集
    mysql_free_result(res);
    // 10、关闭连接，断开句柄
    mysql_close(mysql);
    return 0;
}